package org.acm.seguin.refactor.type; import org.acm.seguin.parser.ast.ASTName; import org.acm.seguin.parser.ast.ASTPackageDeclaration; import org.acm.seguin.parser.ast.SimpleNode; import org.acm.seguin.parser.factory.NameFactory; import org.acm.seguin.refactor.TransformAST; /** * This object revises the package statement * *@author Chris Seguin *@created October 23, 1999 */ public class ChangePackageTransform extends TransformAST { private ASTName name; /** * Constructor for the ChangePackageTransform object * *@param name Description of Parameter */ public ChangePackageTransform(ASTName name) { this.name = name; } /** * Constructor for the ChangePackageTransform object * *@param packageName Description of Parameter */ public ChangePackageTransform(String packageName) { name = NameFactory.getName(packageName, null); } /** * Update the syntax tree * *@param root the root of the syntax tree */ public void update(SimpleNode root) { if (name.getName().length() == 0) { removePackage(root); } else { addPackage(root); } } /** * Adds a feature to the Package attribute of the ChangePackageTransform * object * *@param root The feature to be added to the Package attribute */ private void addPackage(SimpleNode root) { SimpleNode first = (SimpleNode) root.jjtGetChild(0); ASTPackageDeclaration pack = new ASTPackageDeclaration(0); pack.jjtAddChild(name, 0); if (first instanceof ASTPackageDeclaration) { root.jjtAddChild(pack, 0); } else { root.jjtInsertChild(pack, 0); } } /** * Description of the Method * *@param root Description of Parameter */ private void removePackage(SimpleNode root) { SimpleNode first = (SimpleNode) root.jjtGetChild(0); if (first instanceof ASTPackageDeclaration) { root.jjtDeleteChild(0); } } }